package cn.z2huo.knowledge.basic.internal.staticinternal.package1;

/**
 *
 */
class StaticInternalClass {

    private String param;

    private static String typeParam;

    static class StaticClass {

        private String name;

        public String getName() {
            return name;
        }

        public String getTypeParamName() {
            return typeParam + name;
        }

        public String getParamName() {
            // 静态内部类的实例方法不能引用外部类中的非静态属性
//            return param + name;
            return null;
        }

        public static String getStaticParamName() {
            // 静态内部类的静态方法可以引用外部类的静态属性
            // 但是不能引用当前静态内部类的非静态属性
//            return typeParam + name;
            return null;
        }
    }

    public static StaticClass getStaticClass() {
        // 外部类的静态方法可以引用静态内部类
        return new StaticClass();
    }

    public StaticClass getClazz() {
        // 外部类的实例方法可以引用静态内部类
        return new StaticClass();
    }

    public static void main(String[] args) {
        StaticClass staticClass = new StaticClass();
        System.out.println(staticClass.getName());
        System.out.println(staticClass.getParamName());
    }

}
